<template>
  <div class="import">
    <!-- 完成员工批量新增
    1:定义批量新增的api
    2:导入api
    3:获取到excel解析后的数据传入api接口实现批量新增

     -->
    <el-card>
      <h3 class="title">员工导入</h3>
      <HmUpload :before-upload="beforeUpload" :on-success="onSuccess" />
    </el-card>
  </div>
</template>
<script>
import { sysUserBatch } from '@/api/employees.js'
export default {
  methods: {
    // vant 上传组件  before-read
    // 作用，上传前的限制（比如限制上传文件大小，类型.....）
    // 上传excel插件使用
    beforeUpload(file) {
      console.log('beforeUpload', file)
      // 需求：最多上传1k的文件
      // file.size:单位是字节
      const isLimit1K = file.size / 1024 < 1024
      if (!isLimit1K) {
        this.$message.error('最多上传1024kb的文件')
      }
      return isLimit1K
    },
    async onSuccess(obj) {
      console.log(obj)
      /*
      [{班级:'78期'}...]===>[{class:'78期'}]
      需要转换的数据格式
      [{入职日期: 43535
            姓名: "高大山1"
            工号: 201893
            手机号: 13141131110
            转正日期: 43719}]
      [
        {
              correctionTime: "2022-02-27T16:00:00.000Z"
              departmentName: "行政部"
              formOfEmployment: 1
              mobile: "13999999999"
              timeOfEntry: "2022-01-31T16:00:00.000Z"
              username: "张三"
              workNumber: "123489"
        },{
          ...
        }
      ]
      */
      const rules = {
        入职日期: 'timeOfEntry',
        姓名: 'username',
        工号: 'workNumber',
        手机号: 'mobile',
        转正日期: 'correctionTime'
      }
      const newArr = obj.results.map((item) => {
        const obj = {}
        Object.keys(item).forEach((item2) => {
          if (item2 === '入职日期' || item2 === '转正日期') {
            obj[rules[item2]] = this.changeTime(item[item2])
          } else {
            obj[rules[item2]] = item[item2]
          }
        })
        return obj
      })
      console.log('newArr', newArr)
      // await sysUserBatch(列表数据格式和单个新增一样)
      await sysUserBatch(newArr)
      this.$message.success('批量新增成功')
      this.$router.push('/employees')
    },
    // 时间转换
    changeTime(num) {
      const t1 = new Date((num - 1) * 24 * 60 * 60 * 1000 - 8 * 60 * 60 * 1000)
      t1.setYear(t1.getFullYear() - 70)
      return t1
    }
  }
}
</script>
<style lang="scss" scoped>
.import {
  padding: 15px;
  .title {
    text-align: center;
  }
}
</style>
